package fun.ticsmyc.question.dp;

/**
 * 516. 最长回文子序列
 * @author Ticsmyc
 * @package fun.ticsmyc.question.dp
 * @date 2021-02-06 12:27
 */
public class 最长回文子序列 {
    public int longestPalindromeSubseq(String s) {
        char[] str =s.toCharArray();
        int n =str.length;

        int[][] dp = new int[n][n];
        for(int i=0;i<n;++i){
            dp[i][i]=1;
        }

        for(int i=n-2;i>=0;--i){
            for(int j=i+1; j<n;++j){
                if(str[i] == str[j]){
                    dp[i][j] = dp[i+1][j-1]+2;
                }else{
                    dp[i][j] = Math.max(dp[i+1][j],dp[i][j-1]);
                }
            }
        }
        return dp[0][n-1];
    }
}
